/**
 * 文章服务
 * @module services/articleService
 */

import api from './api';

/**
 * 获取文章列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.limit - 每页数量
 * @param {string} params.category - 分类ID
 * @param {string} params.search - 搜索关键词
 * @param {boolean} params.published - 是否已发布
 * @returns {Promise<Object>} 文章列表数据
 */
export const getArticles = async (params = {}) => {
  try {
    return await api.get('/articles', { params });
  } catch (error) {
    console.error('获取文章列表失败:', error);
    throw error;
  }
};

/**
 * 获取单篇文章
 * @param {string} id - 文章ID
 * @returns {Promise<Object>} 文章详情
 */
export const getArticleById = async (id) => {
  try {
    return await api.get(`/articles/${id}`);
  } catch (error) {
    console.error('获取文章详情失败:', error);
    throw error;
  }
};

/**
 * 获取精选文章
 * @returns {Promise<Object>} 精选文章
 */
export const getFeaturedArticles = async () => {
  try {
    return await api.get('/articles/featured');
  } catch (error) {
    console.error('获取精选文章失败:', error);
    throw error;
  }
};

/**
 * 搜索文章
 * @param {string} query - 搜索关键词
 * @returns {Promise<Object>} 搜索结果
 */
export const searchArticles = async (query) => {
  try {
    return await api.get('/articles/search', { params: { q: query } });
  } catch (error) {
    console.error('搜索文章失败:', error);
    throw error;
  }
};

/**
 * 创建文章
 * @param {Object} article - 文章数据
 * @returns {Promise<Object>} 创建结果
 */
export const createArticle = async (article) => {
  try {
    return await api.post('/articles', article);
  } catch (error) {
    console.error('创建文章失败:', error);
    throw error;
  }
};

/**
 * 更新文章
 * @param {string} id - 文章ID
 * @param {Object} article - 文章数据
 * @returns {Promise<Object>} 更新结果
 */
export const updateArticle = async (id, article) => {
  try {
    return await api.put(`/articles/${id}`, article);
  } catch (error) {
    console.error('更新文章失败:', error);
    throw error;
  }
};

/**
 * 删除文章
 * @param {string} id - 文章ID
 * @returns {Promise<Object>} 删除结果
 */
export const deleteArticle = async (id) => {
  try {
    return await api.delete(`/articles/${id}`);
  } catch (error) {
    console.error('删除文章失败:', error);
    throw error;
  }
}; 